package jgl.vajra.kingkong.part.vehicle.contract;

import java.util.List;
import java.util.Map;

import io.reactivex.Observable;
import jgl.vajra.kingkong.bean.AdditionalRequirementsBean;
import jgl.vajra.kingkong.bean.CouponAvailableBean;
import jgl.vajra.kingkong.bean.MarketPriceBean;
import jgl.vajra.kingkong.databinding.ActivityConfirmOrderBinding;
import jgl.vajra.kingkong.widget.mvvm.model.BaseModel;
import jgl.vajra.kingkong.widget.mvvm.view.BaseMVVMView;
import jgl.vajra.kingkong.widget.mvvm.viewmodel.BaseViewModel;

public class ConfirmOrderContract {
    public abstract static class Model extends BaseModel {

        public abstract Observable<String> getRandomOrderNumber();
        
        public abstract Observable<String> getPlaceOrderData(Map<String, Object> map, String authorization);

        public abstract Observable<MarketPriceBean> getMarketPriceData(Map<String, Object> map);

        public abstract  Observable<List<AdditionalRequirementsBean>> getAdditionalRequirementsData(Map<String, Object> map);

        public abstract Observable<List<CouponAvailableBean>> getCouponsAvailableData(Map<String, Object> map);
    }

    public interface View extends BaseMVVMView {

        void onReservedCar();

        void onModifyContact();

        void onFollowingCar();

        void onTime();

        void onDriver();

        void onAdditional(int itemPosition, AdditionalRequirementsBean itemData);

        void onOrderRemarks();

        void onCoupon();

        void onIntegralSubtraction();

        void onInvoice();

        void onAccountingDetails();

        void onCalculateAccounts();

        void onDetermine();

        void returnRandomOrderNumberSuccess(String randomOrderNumber);

        void returnMarketPriceData(MarketPriceBean data);

        void returnAdditionalRequirementsData(List<AdditionalRequirementsBean> data);

        void returnPlaceOrderData(String order);

        void returnCouponsAvailableData(List<CouponAvailableBean> data);
    }

    public abstract static class ViewModel extends BaseViewModel<View, ActivityConfirmOrderBinding, Model> {

        public abstract void getRandomOrderNumber();

        public abstract void getPlaceOrderData(Map<String, Object> map, String authorization);

        public abstract void getMarketPriceData(Map<String, Object> map);

        public abstract void getAdditionalRequirementsData(Map<String, Object> map);

        public abstract void getCouponsAvailableData(Map<String, Object> map);
        
    }
}
